//Use this exception class to mark function stubs

#ifndef BASE_FUNCTION_NOT_IMPLEMENTED_EXCEPTION_H
#define BASE_FUNCTION_NOT_IMPLEMENTED_EXCEPTION_H

#include <string>
#include <exception>

namespace base{

class FunctionNotImplementedException : public std::exception {
public:
    FunctionNotImplementedException(): std::exception("unamed function") {}
    FunctionNotImplementedException(const std::string & function_name)
        : std::exception(function_name.c_str()) {
    }
    FunctionNotImplementedException(const char * function_name)
        : std::exception(function_name) {
    }

    const char * what() const {
        std::string formatted_output = format_ + std::exception::what() + "\n";
        return formatted_output.c_str();
    }
private:
    static const std::string format_;
};

} //namespace base
#endif //BASE_FUNCTION_NOT_IMPLEMENTED_EXCEPTION_H